/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package master.client;

import info.client.InfoClient;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 *
 * @author mark
 */
public class Change_Query extends JFrame implements ActionListener{
    //Declareer de GUI-elementen en andere variabelen.
    private JTextField rapportnaam = new JTextField(10);
    private JTextField rapport = new JTextField(50);
    
    private JLabel label_rapportnaam = new JLabel("Rapportnaam");
    private JLabel label_rapport = new JLabel("Rapport");
    private JButton wijzigen = new JButton("Wijzigen");
    
    private JPanel panel = new JPanel();
    
    private String Rapportnaam;
    private String Rapport;
    private String validatie;

    public Change_Query(String _rapportnaam, String _rapport)
    {    
        panel.setLayout(null);
        //Maak het veld voor de rapportnaam niet wijzigbaar.
        rapportnaam.setEditable(false);

        label_rapportnaam.setBounds(10, 5, 100, 20);
        rapportnaam.setBounds(110,5,200,20);
        label_rapport.setBounds(10, 35, 45, 20);
        rapport.setBounds(70,35,400,20);
        wijzigen.setBounds(90,70,100,30);
        
        panel.add(label_rapportnaam);
        panel.add(rapportnaam);
        panel.add(label_rapport);
        panel.add(rapport);
        panel.add(wijzigen);
        
        //Voeg de actionlistener toe aan de wijzigen knop.
        wijzigen.addActionListener(this);
        
        //Declareer loginpanel als contentpane
        setContentPane( panel );
        
        //Geef een aantal eigenschappen op voor het scherm.
        setResizable(false);
        setVisible(true);
        setSize(500, 150);
        setTitle("Rapport wijzigen");
        
        //Sla meegegeven gegevens op in variabelen.
        Rapportnaam = _rapportnaam;
        Rapport = _rapport;
        
        //Weergeef de inhoud van deze variabelen in de tekstvelden.
        rapportnaam.setText(Rapportnaam);
        rapport.setText(Rapport);
        
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //Als de wijzigen knop is ingedrukt.
        if(e.getSource() == wijzigen)
        { 
            //Sla de tekst uit de tekstvelden op in variabelen.
            String query_name = rapportnaam.getText();
            String query_text = rapport.getText();
            String FromSplitter[] = query_text.split("FROM");
            
            //Als beide tekstvelden leeg zijn.
            if (query_name.equals("") || query_text.equals(""))
            {
                //Laat een popupscherm zien waarop wordt gezegd dat beide velden moeten worden ingevuld.
                JOptionPane.showMessageDialog(null,"Vul beide velden in","Mislukt",JOptionPane.WARNING_MESSAGE);
            } 
            else if(FromSplitter[0].equals(query_text))
            {
                JOptionPane.showMessageDialog(null,"FROM moet met hoofdletters geschreven worden","Mislukt",JOptionPane.WARNING_MESSAGE);
            }
                //Als beide velden wel zijn ingevuld.
                else
                {
                            //Declareer de variabele testquery.      
                            String testquery = query_text;

                            //Stuur testquery over de socketconnection naar de Infoserver
                            InfoClient.socketconnection.send(testquery);

                            Object[][] rowresult = InfoClient.socketconnection.read();
                            for(Object[] ro : rowresult)
                            {
                                for(Object oa : ro)
                                {
                                    validatie = oa.toString();
                                }
                            }
                            
                            
                            
                            if(validatie.equals("invalid"))
                            {
                                JOptionPane.showMessageDialog(null,"De ingevoerde query is niet valide","Mislukt",JOptionPane.WARNING_MESSAGE);
                            }
                            else
                            {                       
                                String query = "UPDATE rapporten Set rapport='" + query_text + "' Where rapportnaam ='" + Rapportnaam + "'";

                                //Stuur de query over de socketconnection naar de Infoserver waar deze wordt uitgevoerd.
                                InfoClient.socketconnection.send(query);

                                JOptionPane.showMessageDialog(null, Rapportnaam + " is gewijzigd","Geslaagd",JOptionPane.INFORMATION_MESSAGE);

                                //Sluit dit scherm af.
                                this.setVisible(false);
                            }

             }
        }
    }
}
